﻿using ModelLayer;
using System;
using System.ServiceModel;
using WcfBetterPlace.WcfData;

namespace WcfBetterPlace
{
    [ServiceContract]
    public interface IBetterClientService
    {
        [OperationContract]
        void DoWork();

        #region Customer services

        [OperationContract]
        PersonData GetCustomer(long id);

        [OperationContract]
        IntData UpdateCustomer(Customer customer);

        [OperationContract]
        PersonList GetAllCustomers();

        #endregion Customer services

        #region Reservation services

        [OperationContract]
        ReservationData CreateReservationUsingDijkstras(long startStationId, long endStationId, long customerId, DateTime date);

        [OperationContract]
        ReservationData CreateReservationUsingAStar(long startStationId, long endStationId, long customerId, DateTime date);

        [OperationContract]
        ReservationData GetReservation(long id);

        [OperationContract]
        ReservationList GetAllReservations();

        [OperationContract]
        ReservationList GetAllReservationsFromCustomer(long customerId);

        [OperationContract]
        IntData UpdateReservation(Reservation resv);

        [OperationContract]
        IntData CancelReservation(long resvId);

        #endregion Reservation services

        #region Station services

        [OperationContract]
        StationList GetAllStations();

        #endregion Station services
    }
}